
//424.替换后的最长重复字符
class Solution {
public:
    int characterReplacement(string s, int k) {
        //此题就是找一个最大区间，该区间内不同的字符不能超过k个
        unordered_map<char ,int> mm;   //存储区间中字符的种类和个数
        int left=0,n=s.size();
        int ret=0,right,maxcount=0;   //用maxcount来记录区间中最长重复字符的个数
        for(int right=0;right<n;right++)
        {
            mm[s[right]]++;
            maxcount=max(maxcount,mm[s[right]]);  //此处的maxcount只需要在此处进行维护即可
            while(right-left+1-maxcount>k)   //使用right-left-1来表示区间的长度，
            {                                //而right-left+1-maxcount来表示区间中要被替代的个数
                if(--mm[s[left]]==0) mm.erase(s[left]);
                left++;
            }
            ret=max(ret,right-left+1);
        }
        
        return ret;
    }
};